Various communications applications and protocols enable communications between software programs or users. As examples, real-time communications applications such as MICROSOFT WINDOWS MESSENGER and Voice over Internet Protocol (“VoIP”) enable communications between users sending each other text, video, or voice data. These applications may use various protocols, such as Session Initiation Protocol (“SIP”), Real-Time Transport Protocol (“RTP”), and Real-Time Control Protocol (“RTCP”), to establish sessions and send communications-related information. SIP is an application-layer control protocol that devices can use to discover one another and to establish, modify, and terminate sessions between devices. RTP is a protocol for delivering audio and video over the Internet, and is frequently used in streaming media systems and videoconferencing systems in conjunction with other protocols such as RTCP and H.323. RTCP is a protocol that enables a client application to monitor and control data sent or received using RTP, and is used with RTP. SIP and RTP/RTCP are Internet proposed standards. Their specifications, “RFC 3261” and “RFC 3550,” and respectively, are available on the Internet at www.ietf.org at /rfc/rfc3261.txt and www.faqs.org at /rfcs/rfc3550.html, respectively, and are incorporated herein in their entirety by reference.
Applications may additionally use other protocols. Applications may use enhanced versions of the protocols indicated above or altogether different protocols that are designed to carry specialized data. As an example, when a new or improved protocol for carrying videoconferencing information becomes available, an application developer creating or modifying an application may desire to use the new or improved protocol, e.g., to improve performance or offer additional features. To use the new or improved protocol, the application developer may need to modify portions of the application that interact with communications protocols because an improvement to a protocol or a new protocol may have a different interface than a protocol already being used. As an example, while a protocol may have a NewSession interface to create a new session, an improved version may have a StartSession method that creates and starts a session and accepts additional parameters. Because StartSession accepts additional parameters, its interface is different from NewSession, and so an application using NewSession may need to be modified to use StartSession. When a protocol has a different interface, application developers may need to learn the different interface and modify their applications to use this interface to use the protocol.
Application developers may need to become familiar with details of each of the many communications protocols they use in applications they develop. As an example, when an application developer uses SIP and RTP/RTCP, the application developer may need to be familiar with all three protocols to provide program logic relating to the protocols. An application developer not familiar with all three protocols may need additional training and time to become familiar with these protocols. Furthermore, when the application is to be modified to work with additional or improved protocols, the application developer may need to revise or add programming logic so that the application can function with these protocols. This could lead to additional development expense and difficulty.
Furthermore, various protocols present a variety of complexities. For example, to provide a videoconferencing facility in an application, the application's developer would have to become familiar with a number of protocols and provide logic to coordinate these protocols to add videoconferencing capabilities. Adding other collaboration capabilities to an application, such as text messaging, voice messaging, etc., presents other similar complexities.
Thus, an architecture for an extensible real-time collaboration system that facilitates addition of collaboration features in an application without significant investment in developer training would have significant utility.